/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package vip.xiaonuo.dev.modular.job.task;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import vip.xiaonuo.common.timer.CommonTimerTaskRunner;
import vip.xiaonuo.dev.modular.job.entity.Tousu;
import vip.xiaonuo.dev.modular.job.mapper.TousuJobMapper;
import vip.xiaonuo.dev.modular.job.util.HttpApiUtil;
import java.text.SimpleDateFormat;

import java.util.List;
import java.util.Map;

/**
 * 定时器的一个示例
 *
 * @author xuyuxiang
 * @date 2022/8/5 15:52
 **/
@Slf4j
@Component
public class TousuJobTimerTaskRunner implements CommonTimerTaskRunner {

    @Autowired
    TousuJobMapper tousuMapper;

    /**
     * 获取投诉数据逻辑：
     * 1.调用登陆接口，获取cookie
     * @param extJson
     */
    @Override
    public void action(String extJson) {
        log.info("抓取投诉数据定时任务开始执行。。。");
        // 调用http请求获取网页内容
        String loginUrl = "http://183.247.194.62:63636/login";
        String listUrl = "http://183.247.194.62:63636/records";
        Map<String, String> map = tousuMapper.getDhbaAP();
        String username ="";
        String password ="";
        if (map.containsKey("username") && map.containsKey("password")){
            username = map.get("username");
            password = map.get("password");
        }
        if(username.isEmpty()){
            username = "a15558558858";
            password = "Aa123456";
        }
        String cookie = HttpApiUtil.getTousuLogin(loginUrl,username,password);
        // 判断result是否为空
        JSONArray result = HttpApiUtil.getTousuList(listUrl, cookie);
        // 转换成 TOUSU 实体类
        if (result!= null &&!result.isEmpty()) {
            // 获取当前年月日
            List<Tousu> tousuList = result.stream().map(item ->{
                JSONObject object = JSON.parseObject(item.toString());
                Tousu tousu = new Tousu();
                tousu.setComplaintId(object.getString("id"));
                tousu.setComplainantNumber(object.getString("complained_number"));
                tousu.setComplaintTime(object.getDate("complaint_time"));
                return tousu;
            }).toList();
            // 循环查询id是否存在，不存在则插入，存在则不需操作
            for (Tousu tousu : tousuList) {
                // 先查询是否有当前日数据，根据complaint_time查询
//                int cnt = tousuMapper.selectTousuCntById(tousu.getComplaintId());
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String complaintTime = sdf.format(tousu.getComplaintTime());;
                int cnt = tousuMapper.selectTousuCntByTime(complaintTime);
                if (cnt == 0) {
                    // 没有数据，插入数据
                    tousuMapper.insert(tousu);
                }else{
                    // 有数据，更新这条数据的compId
                    tousuMapper.updateTousuCompIdByTime(tousu);
                }
            }
        }
    }
}
